/**
 *
 */
package cc.aileron.dao.identifier;

import cc.aileron.commons.util.CastUtils;

import com.google.inject.Singleton;

/**
 * @author aileron
 */
@Singleton
public class G2DaoIdentifierAccessorFactoryImpl implements
        G2DaoIdentifierAccessorFactory
{
    @Override
    public <T> G2DaoIdentifierAccessor<T> get(final Object object)
    {

        if (cc.aileron.dao.identifier.pojo.G2DaoIdentifier.class.isInstance(object))
        {
            final cc.aileron.dao.identifier.pojo.G2DaoIdentifier<T> i = CastUtils.<cc.aileron.dao.identifier.pojo.G2DaoIdentifier<T>> cast(object);
            return new G2DaoIdentifierAccessor<T>()
            {
                @Override
                public void id(final T id)
                {
                    i.id(id);
                }
            };
        }

        if (cc.aileron.dao.identifier.bean.G2DaoIdentifier.class.isInstance(object))
        {
            final cc.aileron.dao.identifier.bean.G2DaoIdentifier<T> i = CastUtils.<cc.aileron.dao.identifier.bean.G2DaoIdentifier<T>> cast(object);
            return new G2DaoIdentifierAccessor<T>()
            {
                @Override
                public void id(final T id)
                {
                    i.setId(id);
                }
            };
        }

        return null;
    }
}
